package bean.srv;

import java.util.Date;

import xmlparsers.SystemParser;
import xmlparsers.XMLBuilder;

import dominio.Cliente;
import dominio.Cotizacion;
import dominio.ItemPedido;
import dominio.OrdenPedido;
import dominio.Pais;
import bean.dao.HibernateOrdenPedidoDAO;

public class OrdenPedidoSRV {
	private static HibernateOrdenPedidoDAO dao= HibernateOrdenPedidoDAO.getInstancia();
	
	public OrdenPedido getOrdenPedido(int numeroOrdenPedido){
		return dao.getOrdenPedido(numeroOrdenPedido);
	}
	
	public OrdenPedido getOrdenPedidoPorId (int id){
		return dao.getOrdenPedidoPorId(id);
	}
	
	public ItemPedido getItemPedido(int idItemPedido){
		return dao.getItemPedido(idItemPedido);
	}
	
	
	public OrdenPedido crearXMLPorNro (int num ,String path) {
		OrdenPedido op = this.getOrdenPedido(num); 
		XMLBuilder.getInstance().createOrdenPedidoXML(op, path);
		return op;
	}
	
	public OrdenPedido crearXMLPorId (int id ,String path) {
		OrdenPedido op = this.getOrdenPedidoPorId (id); 
		XMLBuilder.getInstance().createOrdenPedidoXML(op, path);
		return op;
	}
	
	public OrdenPedido persitirXMLFile (String filepath) {
		OrdenPedido op = SystemParser.getInstance().parseOrdenPedido(filepath);
		dao.crearOrdenPedido(op);
		return op;
	}
	
	
	public OrdenPedido newOrdenPedido(Cliente cliente, Date fecha, int numero){
		OrdenPedido orden = new OrdenPedido();
		orden.setCliente(cliente);
		orden.setFecha(fecha);
		orden.setNumero(numero);
		orden.setEstado("pendiente");
		return dao.crearOrdenPedido(orden);
	}
	
	public ItemPedido newItemPedido(int cantidad, Pais origen, String serie, String codigo){
		ItemPedido item = new ItemPedido();
		item.setCantidad(cantidad);
		item.setOrigen(origen);
		item.setSerie(serie);
		item.setCodigo(codigo);
		return dao.persistItemPedido(item);
	}
	
	public void agregarItemOrdenPedido(OrdenPedido orden, ItemPedido item){
		orden.agregarItemPedido(item);
		dao.crearOrdenPedido(orden);
	}
	
	public void asignarCotizacionOrdenPedido(OrdenPedido orden, Cotizacion cotizacion){
		orden.setCotizacion(cotizacion);
		dao.crearOrdenPedido(orden);
	}

	public OrdenPedido crearOrdenPedido(OrdenPedido op) {

		return dao.crearOrdenPedido(op);		
	}
}
